// 导入pinia和vue
import { defineStore } from 'pinia'
import { ref } from 'vue'

// 定义一个名为cart的store
const useCart = defineStore('cart', () => {
    // 定义一个cart数组，用于存储购物车中的商品
    const cart = ref([])
    // 添加商品到购物车
    const addToCart = goods => {
        // 查找购物车中是否已经存在该商品
        const item = cart.value.find(item => goods.id == item.id)
        // 如果存在，则增加该商品的数量
        if (item) {
            item.num += goods.num
        // 如果不存在，则将该商品添加到购物车
        } else {
            cart.value.push(goods)
        }
    }
    // 从购物车中移除商品
    const removeCart = id => {
        // 遍历购物车中的商品
        cart.value.forEach((item, index) => {
            // 如果商品id与传入的id相同，则将该商品从购物车中移除
            if (item.id == id) {
                cart.value.splice(index, 1)
            }
        })
    }
    // 计算购物车中商品的总数量
    const cartCount = () => {
        let sum = 0
        // 遍历购物车中的商品
        cart.value.forEach(item => {
            // 将每个商品的数量累加
            sum += item.num
        })
        // 返回总数量，如果没有商品，则返回false
        return sum || false
    }
    // 返回cart、addToCart、removeCart和cartCount
    return { cart, addToCart, removeCart, cartCount }
},
{
    // 开启持久化存储
    persist: {
        enabled: true, strategies: [{
            // 存储的键名为cart
            key: 'cart',
            // 存储方式为localStorage
            storage: localStorage
        }]
    }
})
// 导出useCart
export default useCart